package {{packageName}}.{{apis}}.dto;

import java.util.*;
{{#if apiDto.hasBigDecimal}}
import java.math.BigDecimal;
{{/if}}
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.alibaba.fastjson.annotation.JSONField;
import cn.ibizlab.util.filter.FilterBase;

import lombok.*;
import lombok.experimental.Accessors;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * {{apiDto.logicName}}过滤[{{apiDto.codeName}}]
 *
 * @author generator
 */
@Getter
@Setter
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("{{apiDto.logicName}}过滤DTO")
public class {{apiDto.codeName}} extends FilterBase implements Serializable {

    {{#each apiDto.entity.fields as |field|}}
            {{#each field.allPSDEFSearchModes as |formitem|}}
            {{#unless formitem.valueFunc}}
    /**
     * {{field.logicName}}{{formitem.valueOP}}
     */
                    {{#if (or (eq formitem.valueOP "IN") (eq formitem.valueOP "ISNULL") (eq formitem.valueOP "ISNOTNULL") (formitem.dstPSDEField))}}
    @JsonProperty("{{lowerCase formitem.name}}")
    @JSONField(name = "{{lowerCase formitem.name}}")
                    {{else}}
    @JsonProperty("{{lowerCase formitem.name}}")
                        {{#timeType}}
    @JsonFormat(pattern = "{{format}}", locale = "zh", timezone = "GMT+8")
                        {{/timeType}}
    @JSONField(name = "{{lowerCase formitem.name}}"{{#timeType}} , format = "{{format}}"{{/timeType}})
                        {{#eq type.java "Long"}}
    @JsonSerialize(using = ToStringSerializer.class)
                        {{/eq}}
                    {{/if}}
    @ApiModelProperty(value = "{{field.logicName}}{{formitem.valueOP}}{{formitem.dstPSDEField.logicName}}{{formitem.dstPSDEFSearchMode.valueOP}}", position = {{#if ./@index}}{{./@index}}{{/if}}{{@index}})
	private {{#if (or (eq formitem.valueOP "IN") (eq formitem.valueOP "ISNULL") (eq formitem.valueOP "ISNOTNULL") (formitem.dstPSDEField))}}String{{else}}{{field.javaType}}{{/if}} {{camelCase field.codeName}}{{formitem.valueOP}}{{formitem.dstPSDEField.codeName}}{{formitem.dstPSDEFSearchMode.valueOP}};

            {{/unless}}
            {{/each}}
    {{/each}}

}